package com.hp.gxw.u8.xml;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.hp.gxw.u8.dto.InventoryParameter;
import com.hp.gxw.utils.DateUtil;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;


public class InventoryXml {
	
	public static String createXML(InventoryParameter inventoryParameter) throws Exception{
		try {
			// 1、创建document对象
			Document document = DocumentHelper.createDocument();
			// 2、创建根节点rss
			Element ufinterface = document.addElement("ufinterface");
			ufinterface.addNamespace("z", "http://www.w3.org/2001/XMLSchema");
			// 向ufinterface节点添加efserverid属性(U8账套)
			ufinterface.addAttribute("efserverid", inventoryParameter.getEfserverid());
			// 向ufinterface节点添加eftype属性(方法：24代表采购入库)
			ufinterface.addAttribute("eftype", inventoryParameter.getEftype());
			// 向ufinterface节点添加proc属性(增删改查事件)
			ufinterface.addAttribute("proc", inventoryParameter.getProc());
			// 向ufinterface节点添加efdebug属性
			ufinterface.addAttribute("efdebug", "1");
			// 向ufinterface节点添加actions属性,入库后自动审核
			ufinterface.addAttribute("actions", "verify");
			// 4、生成子节点及子节点内容
			Element voucher = ufinterface.addElement("Inventory");
			Element head = voucher.addElement("header");
			head.addElement("code").setText(inventoryParameter.getCode());
			if(StringUtils.isNotEmpty(inventoryParameter.getCInvAddCode())){
				head.addElement("cInvAddCode", inventoryParameter.getCInvAddCode());// 传入参数：单据类型
			}
			head.addElement("name").setText(inventoryParameter.getName());// 传入参数
			head.addElement("sort_code").setText(inventoryParameter.getSort_code());// 传入参数
			head.addElement("main_measure").setText(inventoryParameter.getMain_measure());// 传入参数
			head.addElement("unitgroup_code").setText(inventoryParameter.getUnitgroup_code());// 传入参数
			if(inventoryParameter.getSale_flag() != null){
				head.addElement("sale_flag").setText(inventoryParameter.getSale_flag());// 传入参数：仓库
			}
			if(inventoryParameter.getPurchase_flag() != null){
				head.addElement("purchase_flag").setText(inventoryParameter.getPurchase_flag());// 传入参数：到货单号
			}
			if(inventoryParameter.getSelfmake_flag() != null){
				head.addElement("selfmake_flag").setText(inventoryParameter.getSelfmake_flag());// 传入参数：供应商
			}
			if(inventoryParameter.getProd_consu_flag() != null){
				head.addElement("prod_consu_flag").setText(inventoryParameter.getProd_consu_flag());// 传入参数：供应商
			}
			if(inventoryParameter.getIn_making_flag() != null){
				head.addElement("in_making_flag").setText(inventoryParameter.getIn_making_flag());// 传入参数：供应商
			}
			if(inventoryParameter.getTax_serv_flag() != null){
				head.addElement("tax_serv_flag").setText(inventoryParameter.getTax_serv_flag());// 传入参数：供应商
			}
			head.addElement("CreatePerson").setText(inventoryParameter.getCreatePerson());// 传入参数：供应商
			head.addElement("ModifyPerson").setText(inventoryParameter.getModifyPerson());// 传入参数：供应商
			head.addElement("ModifyDate").setText(DateUtil.getDateFormat(inventoryParameter.getModifyDate()));// 传入参数：入库日期
			head.addElement("pricetype").setText(inventoryParameter.getPricetype());// 传入参数：制单人
			head.addElement("cPlanMethod").setText(inventoryParameter.getCPlanMethod());// 传入参数：汇率
			head.addElement("cSRPolicy").setText(inventoryParameter.getCSRPolicy());// 传入参数：汇率
			head.addElement("iSupplyType").setText(inventoryParameter.getISupplyType());// 传入参数：汇率
			Element body = voucher.addElement("body");
			OutputFormat format = OutputFormat.createPrettyPrint();
			// 设置编码格式
			format.setEncoding("UTF-8");
			
			return document.asXML();
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	public static String queryXML(String efserverid, String efid){
		try {
			// 1、创建document对象
			Document document = DocumentHelper.createDocument();
			// 2、创建根节点rss
			Element ufinterface = document.addElement("ufinterface");
			ufinterface.addNamespace("z", "http://www.w3.org/2001/XMLSchema");
			// 向ufinterface节点添加efserverid属性(U8账套)
			ufinterface.addAttribute("efserverid", efserverid);
			// 向ufinterface节点添加eftype属性(方法：24代表采购入库)
			ufinterface.addAttribute("eftype", "BA_INV");
			// 向ufinterface节点添加proc属性(增删改查事件)
			ufinterface.addAttribute("proc", "query");
			// 向ufinterface节点添加efdebug属性
			ufinterface.addAttribute("efdebug", "0");
			// 向ufinterface节点添加actions属性,入库后自动审核
			ufinterface.addAttribute("efid", efid);


			OutputFormat format = OutputFormat.createPrettyPrint();
			// 设置编码格式
			format.setEncoding("UTF-8");

			return document.asXML();

		}catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
}
